﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;

//int	main()
//{
//	cout << "hello world " << endl;
//	return 0;
//}

//typedef int DataType;
//class Stack
//{
//public:
//	Stack(int capacity = 5)//构造函数可以写缺省
//	{
//		_array = (DataType*)malloc(sizeof(DataType) * capacity);
//		if (_array == NULL)
//		{
//			perror("malloc fail");
//			exit(-1);
//		}
//		_capacity = capacity;
//		_top = -1;
//	}
//	void Push(int x)
//	{
//		_top++;
//		if (_top == _capacity)
//		{
//			_array = (DataType*)realloc(_array, sizeof(DataType) * 2 * _capacity);
//			if (_array == NULL)
//			{
//				perror("realloc fail");
//				exit(-1);
//			}
//			_capacity *= 2;
//		}
//		_array[_top] = x;
//	}
//private:
//	DataType* _array;
//	int _capacity;
//	int _top;
//};
//class Stack
//{
//public:
//	Stack(int capacity = 5)//构造函数可以写缺省
//	{
//		_array = (DataType*)malloc(sizeof(DataType) * capacity);
//		if (_array == NULL)
//		{
//			perror("malloc fail");
//			exit(-1);
//		}
//		_capacity = capacity;
//		_top = -1;
//	}
//	void Push(int x)
//	{
//		_top++;
//		if (_top == _capacity)
//		{
//			_array = (DataType*)realloc(_array, sizeof(DataType) * 2 * _capacity);
//			if (_array == NULL)
//			{
//				perror("realloc fail");
//				exit(-1);
//			}
//			_capacity *= 2;
//		}
//		_array[_top] = x;
//	}
//private:
//	DataType* _array = (DataType*)malloc(sizeof(DataType) * 4);//不写默认构造函数可以在这给缺省值
//	int _capacity = 4;//注意，这里是给默认构造函数传缺省值，不是初始化
//	int _top = -1;//如果有自写默认构造函数，则按照自写默认构造函数的来
//};
//
//int main()
//{
//	Stack s1;
//	Stack s2;
//	s2.Push(1);
//	s2.Push(2);
//	s2.Push(3);
//	s2.Push(4);
//	s2.Push(5);
//	s2.Push(6);
//	s2.Push(7);
//	return 0;
//}

//struct S1
//{
//	int num;
//	int arr[];//柔性数组
//};
//
//struct S2
//{
//	int num;
//	int* arr;
//};
//
//int main()
//{
//	struct S1* ps = (struct S1*)malloc(sizeof(struct S1) + 40);
//	struct S2* ptr = (struct S2*)malloc(sizeof(struct S2));
//	ptr->arr = (int*)malloc(sizeof(int) * 10);
//	printf("S1:%p %p\n", ps, ps->arr);
//	printf("S2:%p %p\n", ptr, ptr->arr);
//
//	return 0;
//}

//void findTwoNum(int arr[], int n, int* pnum1, int* pnum2)
//{
//	int i;
//	int sum = 0;
//	for (i = 0; i < n; i++)
//	{
//		sum ^= arr[i];
//	} //先找到两个数互相异或的结果​
//	int pos = 0;
//	for (i = 0; i < 32; i++)
//	{
//		if (sum & (1 << i))
//		{
//			pos = i;
//			break;
//		}
//	} //再找到有分歧的一位。在这一位上，两个数一定是一个1一个0
//	* pnum1 = *pnum2 = 0;
//	for (i = 0; i < n; i++)
//	{
//		if (arr[i] & (1 << pos))
//		{
//			*pnum1 ^= arr[i]; //这一位是1的，放在数1里
//		}
//		else
//		{
//			*pnum2 ^= arr[i]; //这一位是0的，放在数2里
//		}
//	}
//}
//int main()
//{
//	int arr[] = { 1,1,2,2,6,4 };
//	int size = sizeof(arr) / sizeof(arr[0]);
//	int num1 = 0;
//	int num2 = 0;
//	findTwoNum(arr, size, &num1, &num2);
//	printf("%d %d\n", num1, num2);
//	return 0;
//}

int main()
{
	int a = 1 << 1;
	int b = -1 << 1;
	int c = -1;
	printf("%d %d\n", a, b);
	return 0;
}